3. SSO登录实现方式¶
问题提出:假定服务器有多个独立系统,能否多个独立系统共享一套验证信息
问题解决:利用单点登录(SSO)
正常多服务器SSO登录时序图
sso退出登录时序图
SSO的难点在于,用户登录一台服务器后,如何让别的服务器也同时得到用户的状态,包括登陆状态和授权等。
一般我们常用以下方式来让多台服务器共享用户的状态:
- 共享session:
- 一旦用户在某一台服务器登录,得到的session就可以和其他服务器共享
- 实现简单
- 应用体系简单,子系统很少的情况下,可以考虑采用
- 存在问题
- 严重扩展性问题,Session中所涉及的类型必须是子系统中共同拥有的
- 跨等级域名情况无法处理
- SSO:
- 是一类解决方案的统称,而在具体的实施方面,我们有两种策略可供选择:
- SAML 2.0
- OAuth 2.0
- 是一类解决方案的统称,而在具体的实施方面,我们有两种策略可供选择: